package pe.com.hermes.hermetic.web.controller.json;

import pe.com.hermes.hermetic.beans.ComboBean;
import pe.com.hermes.hermetic.beans.DenominacionPedidoBean;

import pe.com.hermes.hermetic.beans.HoraBean;

import pe.com.hermes.hermetic.beans.PedidoAjaxBean;

import pe.com.hermes.hermetic.beans.SucursalBean;

import pe.com.hermes.hermetic.beans.TiposBean;

import java.sql.SQLException;

import java.util.Collection;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.bind.annotation.ResponseBody;

import pe.com.hermes.csserviceclient.modelo.bean.CServicioBoveAbonBean;
import pe.com.hermes.csserviceclient.modelo.bean.CServicioBoveDenoBean;
import pe.com.hermes.csserviceclient.modelo.bean.CServicioBoveDetaBean;
import pe.com.hermes.csserviceclient.modelo.bean.CServicioBoveMyorCtiaBean;
import pe.com.hermes.hermetic.beans.ClienteBean;
import pe.com.hermes.hermetic.beans.ConfBean;
import pe.com.hermes.hermetic.beans.CuentaBean;
import pe.com.hermes.pedidotxclient.modelo.bean.PedidoBean;
import pe.com.hermes.unidadesnegocio.general.response.pedido.PedidoResponse;
import pe.com.hermes.hermetic.negocio.managerimpl.pedido.atm.PedidoAtmContainerManagerImpl;
import pe.com.hermes.hermetic.negocio.managerimpl.pedido.atm.PedidoAtmManagerImpl;
import pe.com.hermes.hermetic.negocio.managerimpl.pedido.tv.PedidoTvContainerManagerImpl;
import pe.com.hermes.unidadesnegocio.general.response.common.CampoResponse;
import pe.com.hermes.unidadesnegocio.general.response.pedido.PedidosResponse;
import pe.com.hermes.unidadesnegocio.procesamiento.entities.PedidoDenoEntity;

public interface IJsonMethodsController {
    public List getListModulosByCntas(String cuentas, HttpServletRequest request);
    public DenominacionPedidoBean[] getListDenoySaldos(String cliente, String cuenta, String sucursal, String tipUnidMone,String fecProcAper,String tipBill,HttpServletRequest request);
    public String sayHello(String name);
    public boolean isValidFechaContable(String codClie, String fechaContable,String codCnta,String codSucuHtb,HttpServletRequest request);
    public CampoResponse isValidFechaAtencion(String fechaContable,String hora);
    //public PedidoBean[] savePedido(PedidoAjaxBean[] pedidosBean);
    public int savePedidoInMemory(PedidoAjaxBean[] pedidosBean);
    public int savePedidoAtmInMemory(PedidoAtmContainerManagerImpl pedidosContainer);
    public int delPedidoAtmInMemory(int idPedido);
    public int saveDemo(HoraBean[] values);
    public boolean isValidPass(String passWeb);
    public String[] getClavePedidosDelDia(String codCliente);
    public @ResponseBody boolean isValidCodDiario(String cliente, String codDiario);
    public String getFechaHoy();
    public String getHoraNow(); 
    public void setSucuChkSession(); 
    public void putListBoveDetasOnSession(String tipDocuCmpb, String codSeriCmpb,int numCmpb, int codBove,int codSucuHtb, String codClieCnta);
    public CServicioBoveDetaBean[] getListBoveDeta();
    public CServicioBoveAbonBean[] getListBoveAbon();
    public CServicioBoveMyorCtiaBean[] getListBoveMyorCtia();
    public CServicioBoveDenoBean[] getListBoveDeno(String tipDocuCmpb, String codSeriCmpb,int numCmpb, int codBove,int codSucuHtb, int nseSecu);
    public String getFecProcAper(String cliente, String cuenta, String sucursal, HttpServletRequest request);
    public ComboBean[] getListPunt(String cliente, String tipUnidMone, String tipDest,HttpServletRequest request);
    public ComboBean[] getListPuntAtm(String tipUnidMone, String tipDest,HttpServletRequest request);
    public SucursalBean[] getListSucu(String cliente, String cuenta, String tipUnidMone,HttpServletRequest request);
    public int getCodSucuHtb(String cliente, String cuenta, String tipUnidMone, String codPunt, String codClieGrup,HttpServletRequest request);
    public TiposBean[] getListTipUnidMone(String cliente, String cuenta, HttpServletRequest request);
    public TiposBean[] getListTipBill();
    public TiposBean[] getListTipDest() throws SQLException;
    public String getDesCnta(String cliente, String codCnta,String codSucuHtb,HttpServletRequest request);
    public int getCodSucuHtb(String codPunt, String codClieGrup);
    public boolean isValidSucuByCntaAndTipUnidMone(String cliente, int codCnta, int tipUnidMone, int codSucuHtb,HttpServletRequest request);
    public ComboBean[] listUserByClie(int codClie,HttpServletRequest request);
    public int inseConfMailClie(String usuWeb,String codAlert);
    public int modiConfMailClie(String usuWeb,String codAlert);
    public int delConfMailClie(String usuWeb,String codAlert);    
    public SucursalBean[] getListSucuAll(String desSucuHtb,HttpServletRequest request);
    public SucursalBean[] getListSucuAtm(String desSucuHtb,HttpServletRequest request); 
    /*REQ1614 Metodos para cargar grilla de Pedidos Masivos*/
    public PedidoAtmContainerManagerImpl getListPedidosExito();
    public PedidosResponse savePedidoATMCarga(PedidoAtmContainerManagerImpl pedidoContainer);
    /*FIN REQ1614*/
    public CuentaBean[] getCntaAtm(String codSucursal,HttpServletRequest request);
    public TiposBean[] getListPrioAtm(int codSucuHtb,int codPunt, String fecAten,HttpServletRequest request) throws Exception;
    public DenominacionPedidoBean[] getListDenoYSaldAtm(int codSucuHtb, int codCnta,String fecProcAper,int codCjro,int tipBill,HttpServletRequest request);  
    public ComboBean[] listUserByCliente(String codClie);
    public int delNivAutConf(int codNiv);
    public PedidoResponse validatePedidoAtm(PedidoAtmManagerImpl pedidosBean);
    
    public int saveNivAutConf(int numNiv, String desNiv, String codPro, String clieOrig, String clieDest);
    public int actuNivAutConf(int codNiv, int numNiv, String desNiv, String codPro);
    public int saveUserNivAutConf(String desUsu, String codPro, int codNiv, String codClieOrig, String codClieDest);
    public int actuUsuNivAutConf(int codNiv, String desUsu, int numSecu, String codPro, String codClieOrig, String codClieDest);
    public int delUsuNivAutConf(int codNiv,int numSecu);
    public int existPedPendAuto(String codClieOrig,String codClieDest, String tipProc);
    public boolean saveUserInSession(int codNiv,String codUsu, String desUsu,String cargo,String codPro, int numSec, String codClieOrig, String codClieDest);
    public boolean actuUserInSession(int codNiv,String codUsu, String desUsu,String cargo,String codPro, int numSec, String codClieOrig, String codClieDest);
    public void delUserInSession(int codNiv, int numSec);
    public PedidosResponse savePedidoAtm(PedidoAtmContainerManagerImpl pedidoContainer);
    public boolean isFecAtenPediNextDay();
    public int existUser(String desUsu, String codClie);
    
    public PedidoResponse modiPedidoAtmTemp(PedidoAtmContainerManagerImpl pedidoContainer);
    public PedidosResponse elimPedidoAtmTemp(PedidoAtmContainerManagerImpl pedidoContainer);
    public PedidosResponse confPedidoAtmTemp(PedidoAtmContainerManagerImpl pedidoContainer);
    public boolean returnMaxNivelAutorizacion(PedidoAtmContainerManagerImpl pedidoContainer);
    
    public void sendMail(String remitente,Collection<String> destinatarios,String replyTo, String asunto,String message);
    public PedidosResponse rechazarPedidoAtmTemp(PedidoAtmContainerManagerImpl pedidoContainer);
    public TiposBean[] getListFechaPublica(String opcion,String sucursal);
    public TiposBean[] getListFechaPublicaAbast(String opcion,String sucursal);
    public TiposBean[] getListPrioAtmPred(int codSucuHtb,int codPunt, String fecAten,String indPrio ,HttpServletRequest request) throws Exception;
    public int tieneMontosVaciosAtm(PedidoAtmManagerImpl pedidosBean);
    public CampoResponse validaCajero(String codPunt);
    public CampoResponse validaPreEdit(PedidoAtmContainerManagerImpl pedidoContainer, String codPunto);
    public TiposBean getColorByGrup(int codGrup);
    public String getNextCorr(String codPunto, String codGrup);
    public int saveEquiResp(String idx, String codPunto, String codAgrup, String codGrup,  String codColor, String desColor, String numCorr, String codResponsable,String nomResponsable);
    public int inactivaResponsable(String idResp);
    public int inactivaRespMasi(String codPunto);
    public void limpiarSucursales();
    public void limpiarPuntos();
    public void limpiarClientesCorp();
    public void limpiarBancos();
    public void limpiarRegiPedi();
    public String valiColoGral(String codPunto, String codColo);
    public int getCodClieEleg(String listCodClie, String codClieDest, String tipProc);
    public int copyNivAutConf(String codClieOrig, String codClieDest, String codBancDest, String codPro);
    public int getExisProgPunt(int codPunt);
    public int saveProgInMemory(String tipFrec, String numProgSema, String checks, String fecIni, String fecFin);
    public String calcularFechaFinPedido(String fecIni, int numRepe, int tipFrec);
    public PedidosResponse savePedido(PedidoAjaxBean[] pedidosBean, String codClieOrig, String desClieOrig);
    public ComboBean[] listClieByCorp();
    public PedidosResponse confPedidoTemp(PedidoTvContainerManagerImpl pedidoContainer, String tipProc);
    public PedidosResponse rechazarPedidoTemp(PedidoTvContainerManagerImpl pedidoContainer, String tipProc);
    public PedidosResponse elimPedidoTemp(PedidoTvContainerManagerImpl pedidoContainer, String tipProc);
    public CampoResponse validaPreEditTv(PedidoTvContainerManagerImpl pedidoContainer, String codPunto);
    public PedidoResponse modiPedidoTvTemp(PedidoTvContainerManagerImpl pedidoContainer, String codClie);
    public ClienteBean[] getListBancPedi(String cliente);
    public TiposBean[] getListUnidMoneClie(String cliente);
    public ComboBean[] getListPuntCome(String cliente, HttpServletRequest request);
    public PedidoDenoEntity[] getListDenoByUnidMone(String tipUnidMone, HttpServletRequest request);
    public CampoResponse isValidNiveAutoCome(String codClieOrig, String codClieDest);
    public ComboBean[] getListCntaCarg(String codBanco, String codCliente);
    public String getCodClieEleg(String cli_grupo);
    public PedidosResponse savePedidoCome(PedidoTvContainerManagerImpl pedidoContainer, String codClieOrig, String desClieOrig);
    public int savePedidoComeInMemory(PedidoTvContainerManagerImpl pedidosContainer);
    public boolean existeCntaCargo(String numCntaCargo, String codBanco, String codCliente);
    public int saveCntaCargo(String numCntaCargo, String codBanco, String codCliente);
    public int actuConfPedi(int codProg, String tipFrec, int numProgSema, String selDias, String fecIni, String fecFin);
    public SucursalBean[] getListSucu(String cliente);
    public int getParmConfPeri(String cliente,  HttpServletRequest request);
    public ComboBean[] getListPuntComeByBanc(String cliente, String codBanc, HttpServletRequest request);
}
